<?php

try {
	//Identifiant de l'onglet
	$idOnglet = tabGetIdByCode('TAB_AJOUT_INVITES');
	
	//A ce stade le cookie existe et a été vérifié
	$idMariage = getIdMariage();
	$infosMariage = getInfosMariage($idMariage);
	
	//On récupère la liste dans l'ordre alphabétique de tous les invités
	$listeInvitesAAfficher = getListeInvitesByMariage($infosMariage[KEY_ID_MARIAGE]);
	
	//Initialisations des paramètres
	$afficherFormChoix = true;
	$nbInvites = 0;
	$listeInvitesAAjouter = array();
	$listeInvitesNonAjoutes = array();
	$flagInvitesAjoutes = false;
	$nbInvitesAjoutes = 0;
	$arrayInvitesInit = array
					(KEY_INVITE_CIVILITE	=> null
					,KEY_INVITE_NOM			=> null
					,KEY_INVITE_PRENOM		=> null
					,KEY_INVITE_EMAIL		=> null
					,KEY_INVITE_TELEPHONE	=> null
					,KEY_INVITE_CONFIRME	=> null
					);
	
	//Initialisation du tableau des inputs
	$fldInputs = array();
	
	//On vérifie comment est appelée la page
	if ($_SERVER['REQUEST_METHOD'] === 'POST') {
		// L'un des formulaires a été validé
		if ($_POST['hidden'] === 'choixNbInvites') {
			//Le formulaire de choix du nombre d'invités à ajouter a été soumis
			$afficherFormChoix = false;
			$nbInvites = intval($_POST['nbInvites']);
			for ($i=0; $i<$nbInvites; $i++) {
				$fldInputs[$i] = $arrayInvitesInit;
			}
		} elseif ($_POST['hidden'] === 'listInvites') {
			if ($_POST['typeAction'] === '0') {
				//Le formulaire d'ajout d'invités a été soumis pour annulation de l'action
				$afficherFormChoix = true;
			} else {
				//Le formulaire d'ajout d'invités a été soumis pour enregistrement de la saisie utilisateur
				$afficherFormChoix = false;
				$nbInvites = intval($_POST['hiddenNbInvites']);
				//On récupère la sélection de l'utilisateur
				for ($i=0; $i<$nbInvites; $i++) {
					//Ajout dans la liste des champs choisis pour affichage en cas d'erreur
					$fldInputs[$i][KEY_INVITE_IDMARIAGE] = $infosMariage[KEY_ID_MARIAGE];
					$fldInputs[$i][KEY_INVITE_CIVILITE] = $_POST['civilite_'.$i];
					$fldInputs[$i][KEY_INVITE_NOM] = trim($_POST['nom_'.$i]);
					$fldInputs[$i][KEY_INVITE_PRENOM] = trim($_POST['prenom_'.$i]);
					$fldInputs[$i][KEY_INVITE_EMAIL] = trim($_POST['email_'.$i]);
					$fldInputs[$i][KEY_INVITE_TELEPHONE] = trim($_POST['telephone_'.$i]);
					if (isset($_POST['confirme_'.$i]) && $_POST['confirme_'.$i] === '1') {
						$fldInputs[$i][KEY_INVITE_CONFIRME] = true;
					} else{
						$fldInputs[$i][KEY_INVITE_CONFIRME] = false;
					}
					
					//Ajout dans la liste des invités à ajouter pour ceux bien formés
					if (trim($_POST['email_'.$i])!== '' && !isEmail(trim($_POST['email_'.$i]))) {
						//Email saisi invalide, on passe à la soumission suivante et on ajoute l'invité à la liste des non ajoutés
						$listeInvitesNonAjoutes[] = $fldInputs[$i];
						continue;
					} elseif (trim($_POST['telephone_'.$i]) !== '' && !isTelephoneFr(trim($_POST['telephone_'.$i]))) {
						//Téléphone mal formé, on passe à la soumission suivante en ajoutant l'invité à la liste des non ajoutés
						$listeInvitesNonAjoutes[] = $fldInputs[$i];
						continue;
					} else {
						//Invité bien formé, on ajoute à la liste des invités à ajouter
						$listeInvitesAAjouter[$i] = $fldInputs[$i];
					}
				}
				
				//On  enregistre les invités à ajouter s'il y en a
				if (count($listeInvitesAAjouter) > 0) {
					$flagInvitesAjoutes = true;
					$result = ajouterListInvites ($listeInvitesAAjouter);
					$nbInvitesAjoutes = count($result[0]);
					
					//Si tous les invités ont été ajoutés, on n'affiche plus la sélection de l'utilisateur
					if ($nbInvitesAjoutes == count($fldInputs)) {
						//Tous les invités ont été ajoutés
						$afficherFormChoix = true;
					} else {
						var_dump($result[1]);
						//Tous les invités n'ont pas été ajoutés
						$flagInvitesAjoutes = false;
						
						//Tous les invités n'ont pas été affichés, on affiche la sélection faite ainsi que les invités non ajoutés
						$afficherFormChoix = false;
						
						//On merge la liste des erreurs suite à l'échec en base avec celle des échecs de contrôle de surface
						foreach ($result[1] as $inviteNonAjoute) {
							$listeInvitesNonAjoutes[] = $inviteNonAjoute;
						}
						
						//On réduit la liste et le nombre de champs à la liste des invités non ajoutés
						$fldInputs = $listeInvitesNonAjoutes;
						$nbInvites = count($fldInputs);
					}
				}
			}
		}
	}
?>
<div>
	<?php if ($flagInvitesAjoutes) {
		if ($nbInvitesAjoutes == 1) {
			$toPrint = "$nbInvitesAjoutes invité a été ajouté";
		} else {
			$toPrint = "$nbInvitesAjoutes invités ont été ajoutés";
		}
	?>
	<div class="msgConfirm bold"><?php echo $toPrint ?></div>
	<?php } else if (count($listeInvitesNonAjoutes) > 0) { ?>
	<div class="msgError bold">Les invités laissés en sélection n'ont pu être ajoutés</div>
	<?php } ?>

	<?php if ($afficherFormChoix) { ?>
	<form name="formChoix" action="index.php?onglet=<?php echo $idOnglet; ?>" method="post">
		Ajouter <select name="nbInvites">
					<?php
						for ($i=1; $i<=50; $i++) {
							echo "<option value=\"$i\">$i</option>";
						}
					?>
				</select> invité(s)
		&nbsp;&nbsp;&nbsp;
		<input type="hidden" name="hidden" value="choixNbInvites" />
		<input type="submit" value="OK" />
	</form>
	
	<?php } else { ?>
	
	<form name="formListInvites" action="index.php?onglet=<?php echo $idOnglet; ?>" method="post">
		<table><tbody>
		<?php for ($i=0; $i<$nbInvites; $i++) {
			
			//Combo box de civilité
			$civSelM = $civSelMlle = $civSelMme = '';
			if (!is_null($fldInputs[$i][KEY_INVITE_CIVILITE])) {
				if ($fldInputs[$i][KEY_INVITE_CIVILITE] === CIVILITE_MONSIEUR) {
					$civSelM = ' selected="selected"';
				} else if ($fldInputs[$i][KEY_INVITE_CIVILITE] === CIVILITE_MADAME) {
					$civSelMme = ' selected="selected"';
				} else if ($fldInputs[$i][KEY_INVITE_CIVILITE] === CIVILITE_MADEMOISELLE) {
					$civSelMlle = ' selected="selected"';
				}
			}
			
			//Radio bouton présence confirmée
			$confCheckedOui = $confCheckedNon = '';
			if (!is_null($fldInputs[$i][KEY_INVITE_CONFIRME])) {
				if ($fldInputs[$i][KEY_INVITE_CONFIRME] === true) {
					$confCheckedOui = ' checked="checked"';
				} else if ($fldInputs[$i][KEY_INVITE_CONFIRME] === false) {
					$confCheckedNon = ' checked="checked"';
				}
			}
		?>
			<tr>
				<td class="civilite">
					Civilité : <select name="civilite_<?php echo $i; ?>">
						<option value="<?php echo CIVILITE_MONSIEUR; ?>"<?php echo $civSelM; ?>>M.</option>
						<option value="<?php echo CIVILITE_MADAME; ?>"<?php echo $civSelMme; ?>>Mme</option>
						<option value="<?php echo CIVILITE_MADEMOISELLE; ?>"<?php echo $civSelMlle; ?>>Mlle</option>
					</select>
				</td>
				<td class="nom">Nom : <input type="text" name="nom_<?php echo $i; ?>" value="<?php echo printField($fldInputs[$i][KEY_INVITE_NOM]); ?>" /></td>
				<td class="prenom">Prénom : <input type="text" name="prenom_<?php echo $i; ?>" value="<?php echo printField($fldInputs[$i][KEY_INVITE_PRENOM]); ?>" /></td>
				<td class="email">Email : <input type="text" name="email_<?php echo $i; ?>" value="<?php echo printField($fldInputs[$i][KEY_INVITE_EMAIL]); ?>" /></td>
				<td class="telephone">Téléphone(Format français sans espace) : <input type="text" name="telephone_<?php echo $i; ?>" value="<?php echo printField($fldInputs[$i][KEY_INVITE_TELEPHONE]); ?>" /></td>
				<td class="confirme">Présence confirmée :
					Oui <input type="radio" name="confirme_<?php echo $i; ?>" value="1"<?php echo $confCheckedOui; ?> />&nbsp;&nbsp;
					Non <input type="radio" name="confirme_<?php echo $i; ?>" value="0"<?php echo $confCheckedNon; ?> />
				</td>
				<td></td>
			</tr>
		<?php } ?>
		</tbody></table>
		
		<input type="hidden" name="hidden" value="listInvites" />
		<input type="hidden" name="hiddenNbInvites" value="<?php echo $nbInvites; ?>" />
		<input type="hidden" id="typeAction" name="typeAction" value="1" />
		<table><tbody><tr>
			<td><input type="submit" value="OK" /></td>
			<td><input type="submit" value="Annuler" onclick="document.getElementById('typeAction').value='0'" /></td>
		</tr></tbody></table>
	</form>
	<?php } ?>
</div>

<?php } // try {
	catch (Exception $e) {
		redirectErrorPage($e, 'TAB_AJOUT_INVITES', URI_ERROR_PAGE);
	}
?>